#include "stdio.h"
#include "stdint.h"
#include "string.h"
#include "FeedID.h"
#include "FeedFrame.h"


int8_t cFeedFrameDecode(void *pvDatas, int32_t iSizeIn)
{
    uint8_t *pucDatas = pvDatas;
    FeedFrameType typeFrame;
    int32_t iLength;

    if(pvDatas == NULL)
        return 1;

    while(iSizeIn > 0)
    {
        memcpy(&typeFrame, pucDatas, 4);

        /* 数据长度错误 */
        if((typeFrame.get == 0) && (typeFrame.length == 0))
        {
            iLength = 2;
        }
        else
        {
            iLength = ((typeFrame.get != 0) && (typeFrame.response != 0)) ? typeFrame.length + 4 : 2;

            /* 复制待更新的数据 */
            if(typeFrame.length <= sizeof(typeFrame.datas))
            {
                memcpy(&typeFrame, pucDatas, iLength);
            }

            /* 解析 ID 数据 */
            cFeedIDDecode(&typeFrame);
        }

        pucDatas += iLength;
        iSizeIn  -= iLength;
    }

    return 0;
}
